package com.ymm.driver.api.facade;


import com.ymm.driver.api.constants.Dto.DriverDto;
import com.ymm.driver.api.constants.Dto.DriverGrabDto;
import com.ymm.driver.api.constants.Entity.DrbillEntity;
import com.ymm.driver.api.constants.Entity.DriverEntity;
import com.ymm.driver.api.utils.Result;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date;
import java.util.List;


/**
 * @Company: CUG
 * @Description: TODO
 * @Author: LiYangyong
 * @Date: 2022/8/3/003 10:15
 **/
public interface DriverPersonalAllInformationService {


    /**
     * 个人中心相关
     */


    /**
     * 忘记密码后的修改密码
     * @param driverPhone
     * @param driverPassword
     */
    public void driverChangePassword(String driverPhone, String driverPassword);

    /**
     * 司机注册接口
     *
     * @param driverPhone
     * @param driverPassword
     * @return
     */
    public void driverRegisterService(String driverPhone, String driverPassword);


    /**
     * 根据手机号查司机姓名接口
     *
     * @param driverPhone
     * @return
     */
    public String queryDriverByPhone(String driverPhone);


    /**
     * 司机登录接口
     *
     * @param driverPhone
     * @return
     */

    public DriverEntity driverLoginService(String driverPhone);

    /**
     * 根据手机号查密码
     *
     * @param driverPhone
     * @return
     */
    public String selectDriverPasswordByPhone(String driverPhone);


    /**
     * 司机认证接口
     *
     * @param driverIdNum
     * @param driverName
     * @param driverCarType
     * @param driverCarNum
     */
    public void driverAuthentication(String driverPhone, String driverIdNum, String driverName, Integer driverCarType, String driverCarNum, Integer driverSex);


    /**
     * 司机身份信息认证
     * @param driverPhone
     * @param driverName
     * @param driverIdNum
     */
    public void driverInfoAuthentication(String driverPhone, String driverName, String driverIdNum, Integer driverSex);

    /**
     * 车型、车牌认证
     * @param driverPhone
     * @param driverCarType
     * @param driverCarNum
     */
    public void carInfoAuthentication(String driverPhone, Integer driverCarType, String driverCarNum);







    /**
     * 进入个人中心接口
     */
    public void driverPersonalCenter();


    /**
     * 编辑个人信息接口
     *
     * @param driverId
     * @return
     */
    public DriverDto driverEditorPersonInformation(BigInteger driverId);


    /**
     * 提交个人信息
     * @param driverId
     * @param driverPhone
     * @param driverCarType
     * @param driverCarNum
     */
    public void submitInformation(BigInteger driverId, String driverPhone, Integer driverCarType, String driverCarNum);


    /**
     * 司机开通VIP接口
     */
    public void driverJoinVIP(BigInteger driverId);

    /**
     * 司机会员到期时间，先查，后更新
     * @param driverId
     * @return
     */
    public DriverEntity queryNowVipTime(BigInteger driverId);
    public void driverVipTime(BigInteger driverId, Date driverVipTime);




    /**
     * 司机进入钱包接口
     */
    public BigDecimal driverWallet(BigInteger driverId);


    /**
     * 司机联系客服接口
     */
    public void driverFeedBack();


    /**
     * 点击去抢但，跳转到立即抢单页面
     *
     * @param driverGrabDto
     */
    public void grabOrder(DriverGrabDto driverGrabDto);


    /**
     * 根据司机ID查看司机是否是会员
     *
     * @param driverId
     * @return
     */
    public int selectDriverTypeByDriverId(BigInteger driverId);


    /**
     * 普通充值流水
     * @param driverId
     * @param drbillPrice
     * @param drbillType
     */
    public void drbillNormalAddPrice(BigInteger driverId, Double drbillPrice, Integer drbillType, String drbillDescription);

    /**
     * 普通提现流水
     * @param driverId
     * @param drbillPrice
     * @param drbillType
     * @param drbillDescription
     */
    public void drbillNormalSubtractPrice(BigInteger driverId, Double drbillPrice, Integer drbillType, String drbillDescription);



    public void drbillCollectPrice(BigInteger driverId, Double drbillPrice, Integer drbillType, String drbillDescription);

    public void drbillCollectSKPrice(BigInteger driverId, Double drbillPrice, Integer drbillType, String drbillDescription, BigInteger orderId);


    /**
     * 展示司机账单
     * @param driverId
     * @return
     */
    public List<DrbillEntity> showDrbill(BigInteger driverId);







    /**
     * 根据ID查司机信息
     * @param driverId
     * @return
     */
    Result<DriverEntity> driverSearchInfo(BigInteger driverId);

    /**
    * @Author: chencong
    * @Description: 根据id列表查司机信息
    * @DateTime: 11:35 2022/8/7
    * @Params:
    * @Return
    */
    Result<List<DriverEntity>> batchSearchDriverInfo(List<BigInteger> driverIds);

    /**
    * @Author: chencong
    * @Description: 查询司机余额
    * @DateTime: 16:00 2022/8/9
    * @Params:
    * @Return
    */
    Result<Double> getDriverProfitById(BigInteger driverId);


    /**
    * @Author: chencong
    * @Description: 司机余额增加，充值
    * @DateTime: 15:47 2022/8/9
    * @Params:
    * @Return
    */
    Result addDriverProfit(BigInteger driverId, Double mount);


    /**
    * @Author: chencong
    * @Description: 司机提现功能
    * @DateTime: 16:00 2022/8/9
    * @Params: [driverId, mount]
    * @Return com.ymm.driver.api.utils.Result
    */
    Result subtractDriverProfit(BigInteger driverId, Double mount);




    public void test(String driverPhone, String driverPassword);



}
